クロスプラットフォームなベンチマークツールのPhoronix Test Suiteを試してみた
様々なOSに対して、一貫した手法でベンチマークしたい場合、Phoronix Test Suite は有力な候補の一つです。
500近いベンチマーク、CPU・GPU・メモリなど様々な観点でグループ化した60近いベンチマークスイートが用意されており、 ベンチマークの計測、レポーティング、必要なパッケージのインストールといった機能が備わっています。
さらには、テスト結果をベンチマーク共有サイトにアップロードして共有することも可能です。
インストール
Phoronix Test Suiteはコマンドラインツールにしては珍しく、PHPで書かれています。 まずは関連パッケージをインストールします。
Ubuntu 22.04
Ubuntu 22.04 の場合、以下の通りです。
$ sudo apt update && sudo apt upgrade $ sudo apt install php8.1-cli php8.1-common php8.1-bz2 php8.1-curl php8.1-sqlite3 php8.1-gd php8.1-xml
次に、公式サイトから最新のソースコードを取得し、インストールコマンドを実行します。
$ wget https://phoronix-test-suite.com/releases/phoronix-test-suite-10.8.3.tar.gz $ tar zxf phoronix-test-suite-10.8.3.tar.gz $ cd phoronix-test-suite/ $ sudo ./install-sh -e Phoronix Test Suite Installation Completed Executable File: /usr/bin/phoronix-test-suite Documentation: /usr/share/doc/phoronix-test-suite/ Phoronix Test Suite Files: /usr/share/phoronix-test-suite/ $ phoronix-test-suite version ... Phoronix Test Suite v10.8.3
※ .deb パッケージも用意されていましたが、インストール時に依存関係のエラーが発生したため、apt
で個別にインストールしました。
Ubuntu 20.04
Ubuntu 20.04 の場合、以下の通りです。
$ sudo apt update && sudo apt upgrade $ sudo apt install php7.4-cli php7.4-common php7.4-bz2 php7.4-curl php7.4-sqlite3 php7.4-gd php7.4-xml
次に、公式サイトから最新のソースコードを取得し、インストールコマンドを実行します。
この手順は先程と同じため、割愛します。
ベンチマークの流れ
$ phoronix-test-suite benchmark 実行するベンチマーク
を叩くと、ベンチマークに必要なパッケージのインストール、実行、レポートなどを半自動で実行します。
ベンチマーク結果の保存・共有やテストの詳細設定などは、ウィザード形式で答えます。
例えば openssl をベンチマークする場合は次の通りです。
$ phoronix-test-suite benchmark openssl phoronix-test-suite benchmark openssl ... Phoronix Test Suite v10.8.1 Installed: pts/openssl-3.0.1 OpenSSL 3.0: pts/openssl-3.0.1 Processor Test Configuration 1: RSA4096 2: SHA256 3: Test All Options ** Multiple items can be selected, delimit by a comma. ** Algorithm: 2 System Information PROCESSOR: ARMv8 Neoverse-N1 Core Count: 64 Cache Size: 32 MB GRAPHICS: Vulkan: 1.0.2 MOTHERBOARD: Amazon EC2 c6g.16xlarge BIOS Version: 1.0 Chipset: Amazon Device 0200 Network: Amazon Elastic MEMORY: 128GB DISK: 9GB Amazon Elastic Block Store File-System: ext4 Mount Options: discard relatime rw Disk Scheduler: NONE Disk Details: Block Size: 4096 OPERATING SYSTEM: Ubuntu 20.04 Kernel: 5.11.0-1022-aws (aarch64) Compiler: GCC 9.3.0 Security: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Mitigation of SSB disabled via prctl + spectre_v1: Mitigation of __user pointer sanitization + spectre_v2: Not affected + srbds: Not affected + tsx_async_abort: Not affected Would you like to save these test results (Y/n): y Enter a name for the result file: ...
ベンチマークの実行環境は System Information として表示されます。
複数回ベンチマーク実行後、レポートが表示されます。
レポートの最後に、ベンチマーク共有サイト(OpenBenchmarking.org)のサンプルを元に、主要プロセッサの結果や今回の結果のランキングなどがプロットされます。 This Result (89th Percentile): 42506805740 から、今回の結果は上位11%に位置していることがわかります。
テスト結果を保存すると、オプトインで OpenBenchmarking.org にベンチマーク結果を共有することもできます。
Would you like to upload the results to OpenBenchmarking.org (y/n):
ぜひ openbenchmarking.org で共有してください。
ベンチマークの種類
本ツールは、2022/02/03時点で
- 483 テスト
- 1983 テストバージョン
- 59 スイート
のベンチマークが存在します。
どのベンチマークを利用すればよいか迷ってしまいますね。
本ツールを元にしたベンチマーク共有サイトの openbenchmarking.org では、次の3つが人気です。
- Blender (
$ phoronix-test-suite benchmark blender
) # GPU - Timed Linux Kernel Compilation (
$ phoronix-test-suite benchmark build-linux-kernel
) # CPU - AOM AV1 (
$ phoronix-test-suite benchmark aom-av1
) # ビデオエンコード
約500あるベンチマークのなかから、おすすめは次のコマンドで確認できます。
$ phoronix-test-suite list-recommended-tests Phoronix Test Suite v10.8.1 Recommended OpenBenchmarking.org Test Profiles Processor Tests pts/build-linux-kernel Timed Linux Kernel Compilation pts/compress-7zip 7-Zip Compression pts/openssl OpenSSL pts/encode-flac FLAC Audio Encoding pts/npb NAS Parallel Benchmarks pts/hmmer Timed HMMer Search pts/gcrypt Gcrypt Library pts/botan Botan pts/gmpbench GNU GMP GMPbench pts/mrbayes Timed MrBayes Analysis System Tests pts/apache Apache HTTP Server pts/pgbench PostgreSQL pgbench pts/nginx nginx pts/blender Blender pts/systemd-boot-total Systemd Total Boot Time pts/stress-ng Stress-NG pts/viennacl ViennaCL pts/tjbench libjpeg-turbo tjbench system/selenium Selenium system/gimp GIMP Graphics Tests pts/xonotic Xonotic pts/csgo Counter-Strike: Global Offensive pts/glmark2 GLmark2 pts/unvanquished Unvanquished pts/dota2 Dota 2 pts/shoc SHOC Scalable HeterOgeneous Computing pts/etlegacy ET: Legacy pts/insurgency Insurgency pts/civilization-vi Civilization VI pts/paraview ParaView Disk Tests pts/fio Flexible IO Tester pts/fs-mark FS-Mark Memory Tests pts/stream Stream pts/intel-mlc Intel Memory Latency Checker pts/stream-dynamic Stream-Dynamic OS Tests pts/sockperf Sockperf
各ベンチマークは
- Processor
- System
- Graphics
- Disk
- Memory
- OS
など、分類されています。
利用可能なテスト一覧は次のコマンドで確認できます。
$ phoronix-test-suite list-available-tests Phoronix Test Suite v10.8.1 Available Tests pts/ai-benchmark AI Benchmark Alpha System pts/aircrack-ng Aircrack-ng Processor pts/amg Algebraic Multi-Grid Benchmark Processor pts/aobench AOBench Processor pts/aom-av1 AOM AV1 Processor pts/apache Apache HTTP Server System pts/apache-siege Apache Siege System pts/appleseed Appleseed System pts/arrayfire ArrayFire Processor ... git/aom-av1 AOM AV1 Processor git/dav1d dav1d Processor git/rav1e rav1e Processor git/svt-av1 SVT-AV1 Processor git/svt-hevc SVT-HEVC Processor git/svt-vp9 SVT-VP9 Processor git/vpxenc VP9 libvpx Encoding Processor git/x265 x265 Processor
テストをグルーピングしたテストスイートの一覧は次のコマンドで確認できます。
$ phoronix-test-suite list-suites Phoronix Test Suite v10.8.1 Available Suites pts/audio-encoding - Audio Encoding System pts/av1 - AV1 System pts/bioinformatics - Bioinformatics System pts/browsers - Web Browsers System pts/cad - CAD System pts/chess - Chess Test Suite Processor ...
最後に
Phoronix Test Suiteは 2008年から現在に至るまで活発に開発されている枯れたツールで、機能も豊富です。
クラスプラットフォームに様々なベンチマークを再現性のある一環したアプローチでベンチマークしたい場合、有力なツールの一つと思います。
スクリプトを組むことで
- AWS EC2スポットインスタンスを起動
- Phoronix Test Suiteのインストール
- テストスイートの実行
- テスト結果をアップロード
- スポットインスタンスをターミネート
といった使い方も可能です。
ぜひ、ご活用ください。